﻿Imports System.Data
Imports CrystalDecisions.Shared
Imports CrystalDecisions.CrystalReports.Engine
Imports System.Data.OleDb
Imports System
Imports System.Globalization


Partial Class Interfaz_ModuloAdministracion_frmAdminPresupuesto
    Inherits System.Web.UI.Page

    Dim CL As Logica.ModuloAdministracion.ControladorLogica
    Dim dataPresupuesto As New DataSetPresupuesto
    Dim dataPresupuestoCliente As New DataSetPresupuestoCliente

#Region "Datas"
    Dim dtDatosItems As New DataTable
    Dim dataset As New DataSet
    Dim dtDatosMat As New DataTable
    Dim datasetMat As New DataSet
    Dim dtDatosInfoPres As New DataTable
    Dim datasetInfoPres As New DataSet
#End Region

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        CL = Logica.ModuloAdministracion.ControladorLogica.getInstance


        Dim i As Integer

        Dim ArrayCliente As New ArrayList
        Dim ArrayActividad As New ArrayList
        Dim arrayProveedores As New ArrayList
        Dim arrayPresupuestos As New ArrayList
        Dim arrayVendedor As New ArrayList

        ArrayCliente = CL.obtenerCliente()
        arrayPresupuestos = CL.ObtenerPresupuesto()
        arrayVendedor = CL.ObtenerUsuario()

        addAtributesToData()


        If CL.visibilidadesFormsInternos("Administracion", Session("user").ToString) = False Then
            Me.Mensaje("Usted NO cuenta con los permisos necesarios para ingresar a esta sección. Para solucionar este problema favor comunicarse con el administrador de sistemas")
            Response.Redirect("Index.aspx")
        End If

        If Session("GridItems") Is Nothing Then
            Session("GridItems") = dtDatosItems
        Else
            dtDatosItems = DirectCast(Session("GridItems"), DataTable)
        End If

        If Not Page.IsPostBack Then
            Try
                cargarDatosprimariosInforme()

                For i = 0 To ArrayCliente.Count - 1
                    Me.DropCliente.Items.Add(DirectCast(ArrayCliente.Item(i), Cliente).RznSocial)
                Next


                For i = 0 To arrayPresupuestos.Count - 1
                    Dim presuObtenido As Presupuesto = DirectCast(arrayPresupuestos.Item(i), Presupuesto)

                    If presuObtenido.estado = "P" Then
                        Me.DropSeleccionarPresupuesto.Items.Add(presuObtenido.id)
                    End If
                Next

                For i = 0 To arrayVendedor.Count - 1
                    Me.DropVendedor.Items.Add(DirectCast(arrayVendedor.Item(i), Usuario).RefEmpleado)
                Next


                dtDatosItems.Columns.Add(New DataColumn("ID"))
                dtDatosItems.Columns.Add(New DataColumn("TAREA"))
                dtDatosItems.Columns.Add(New DataColumn("OBSERVACION"))
                dtDatosItems.Columns.Add(New DataColumn("NOTASV"))
                dtDatosItems.Columns.Add(New DataColumn("DESCRIPCION"))
                dtDatosItems.Columns.Add(New DataColumn("NOTASC"))
                dtDatosItems.Columns.Add(New DataColumn("BOTONMAT"))
                dtDatosItems.Columns.Add(New DataColumn("BOTONACT"))


                Me.GridItems.DataBind()
                Me.GridItems.DataSource = Me.dtDatosItems

            Catch
            End Try
        End If
        Me.GridItems.DataSource = Me.dtDatosItems


    End Sub

#Region "Funcionalidades"
    Private Sub InsertarItemActividadGV()
        Try
            Dim drDatos As DataRow = dtDatosItems.NewRow

            drDatos.Item("ID") = CL.obtenerUltimoPresupuestoSubproyecto
            drDatos.Item("TAREA") = Me.TxTtareaRealizar.Text
            drDatos.Item("OBSERVACION") = Me.TxTObservacionTaller.Text
            drDatos.Item("NOTASV") = Me.TxTNotasClientes.Text
            drDatos.Item("DESCRIPCION") = Me.TxtDescripcionTrabajo.Text
            drDatos.Item("NOTASC") = Me.TxTNotasClientes.Text

            dtDatosItems.Rows.Add(drDatos)

            Me.GridItems.DataSource = dtDatosItems
            Me.GridItems.DataBind()


        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub

    Private Sub InsertarItemActividadDB()

        If Me.TxTtareaRealizar.Text <> "" And Me.TxTObservacionTaller.Text <> _
        "" And Me.TxTNotasClientes.Text <> "" And Me.TxtDescripcionTrabajo.Text <> "" And Me.TxTNotasClientes.Text <> "" Then

            Dim presusubproyec As presupuestosubproyecto
            presusubproyec = New presupuestosubproyecto(-1, Me.TxTtareaRealizar.Text, Me.TxtDescripcionTrabajo.Text, _
            Me.TxTObservacionTaller.Text, Me.TxTNotasClientes.Text, Me.TxTNotasVentas.Text, Me.lblIdPresupuesto.Text, "no")

            CL.insertarPresupuestoSubProyecto(presusubproyec)

            InsertarItemActividadGV()


            Me.LimpiarItem()
            Me.GridItems.ForeColor = Drawing.Color.Blue
            Me.LabelAvisoIngresoItem.Text = "Los datos han sido ingresados satisfactoriamente"

        Else
            Me.LabelAvisoIngresoItem.ForeColor = Drawing.Color.Red
            Me.LabelAvisoIngresoItem.Text = "Complete todos los datos"
        End If

    End Sub

    Private Sub cargarDatosprimariosInforme()
        Me.TxTEstimadoSr.Text = "Tenemos el agrado de cotizar para Ustedes La fabricación de estructuras de " + _
                                "soportes primarios y secundarios para el proyecto Esperanza, según lo siguiente: "

        Me.TxTPrecio.Text = "Son netos, expresados en moneda nacional y se les debe agregar el  Iva."

        Me.TxTCondiciones.Text = "OC  al inicio de los trabajos y cancelación contra presentación de factura " + _
                                "emitida previa aprobación por parte de SKVyV del  estado de pago " + _
                                "correspondiente al mes recién vencido."

        Me.TxTPlazosEntrega.Text = "De acuerdo a un programa de suministros  presentado por SkVyV y previa " + _
                                    "recepción de la OC. "

        Me.TxTLugarEntrega.Text = "Cargado sobre camión en las instalaciones del cliente en Minera " + _
                                "Esperanza u otro lugar que el cliente especifique, siempre y cuando la " + _
                                "distancia en kilómetros no supere al de Antofagasta – Minera " + _
                                "Esperanza. En caso de solicitar entregas fuera de programa, estas serán tratadas en " + _
                                "cada ocasión. "

        Me.TxTValidezOferta.Text = "60 dias"
    End Sub

    Protected Sub BuscarPresupuestoAntiguo_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BuscarPresupuestoAntiguo.Click
        ' Se limpia el dataTAble
        dtDatosItems.Clear()

        'Se busca el presupuesto seleccionado en el dropBoxList
        Dim presuArray As ArrayList = CL.ObtenerPresupuestoCriterio(Me.DropSeleccionarPresupuesto.Text)
        'activa panel invisible de subproyectos y se desabilita boton ingresar item
        Me.Panel1.Visible = True
        Me.agregarItem.Enabled = False

        ' se convierte presupuesto encontrado a presupuesto y se buscan item del presupuesto encontrado.
        Dim Presupuesto As Presupuesto = DirectCast(presuArray.Item(0), Presupuesto)
        Dim PresuSubProyArray As ArrayList = CL.obtenerSubProyectoCriterio(Presupuesto.id)

        'ingreso id presupuesto al label
        Me.lblIdPresupuesto.Text = Presupuesto.id


        If presuArray.Count > 0 Then

            Me.DropCliente.Text = DirectCast(CL.obteneClienteID(Presupuesto.fkCliente).Item(0), Cliente).RznSocial
            Me.TxtFecha.Text = Presupuesto.fecha
            Me.TxtCondVenta.Text = Presupuesto.condVenta
            Me.DropVendedor.Text = DirectCast(CL.obtenerEmpleadoFK(Presupuesto.fkvendedor).Item(0), Empleado).Rut
            Me.TxTatencion.Text = Presupuesto.atencion
            Me.TxTGarantia.Text = Presupuesto.garantias
            Me.TxTEntrega.Text = Presupuesto.entrega
            Me.TxTPlano.Text = Presupuesto.plano
            Me.TxTRequisicion.Text = Presupuesto.requisicion

            Me.TxTEstimadoSr.Text = Presupuesto.estimadosenor
            Me.TxTPrecio.Text = Presupuesto.precio
            Me.TxTCondiciones.Text = Presupuesto.condicion
            Me.TxTPlazosEntrega.Text = Presupuesto.plazoentrega
            Me.TxTLugarEntrega.Text = Presupuesto.entrega
            Me.TxTValidezOferta.Text = Presupuesto.validezoferta

            Me.TxtGastosGralMat.Text = Presupuesto.gastosgeneralesporcentaje
            Me.TxTPorMate.Text = Presupuesto.utilidadporcentaje
            Me.TxtUtilMat.Text = Presupuesto.utilidadmateriales
            Me.TxTDescuentoMat.Text = Presupuesto.descuentoPorcentaje


        End If

        'se llena gridItem con los subproyectos del proyecto seleccionado
        If PresuSubProyArray.Count > 0 Then
            Try
                Dim j As Integer

                For j = 0 To PresuSubProyArray.Count - 1

                    Dim drDatos As DataRow = dtDatosItems.NewRow
                    Dim arraySP As presupuestosubproyecto = DirectCast(PresuSubProyArray.Item(j), presupuestosubproyecto)

                    drDatos.Item("ID") = arraySP.id
                    drDatos.Item("TAREA") = arraySP.nombreSubProyecto
                    drDatos.Item("OBSERVACION") = arraySP.observacionTaller
                    drDatos.Item("NOTASV") = arraySP.notasVentas
                    drDatos.Item("DESCRIPCION") = arraySP.descripcionSubProyecto
                    drDatos.Item("NOTASC") = arraySP.notasVentas

                    dtDatosItems.Rows.Add(drDatos)

                Next j
            Catch ex As Exception
            End Try

        End If

        Me.GridItems.DataSource = dtDatosItems
        Me.GridItems.DataBind()

    End Sub

#End Region

#Region "Botones"
    Protected Sub BtnIngresarItem_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnIngresarItem.Click
        Me.InsertarItemActividadDB()
        Session("PresupuestoActPag2") = Nothing
        Session("PresupuestoMat") = Nothing
    End Sub
#End Region

#Region "Utilidades"
    Private Sub LimpiarItem()
        Me.TxTtareaRealizar.Text = String.Empty
        Me.TxTObservacionTaller.Text = String.Empty
        Me.TxTNotasClientes.Text = String.Empty
        Me.TxtDescripcionTrabajo.Text = String.Empty
        Me.TxTNotasVentas.Text = String.Empty
    End Sub

    Public Sub redireccionaPagina()
        Dim numeroRow As Integer = 0
        Dim filaGrid As GridViewRow

        For fila As Integer = 0 To Me.GridItems.Rows.Count - 1
            With Me.GridItems

                filaGrid = .Rows(fila)
                Dim btn As Button = filaGrid.FindControl("GridAgregarMaterial")
                btn.Attributes.Add("onclick", "javascript:visualizadorMateriales(" + filaGrid.Cells(0).Text + ")")
                Dim btn2 As Button = filaGrid.FindControl("GridAgregarAct")
                btn2.Attributes.Add("onclick", "javascript:visualizadorActividades(" + filaGrid.Cells(0).Text + ")")
            End With
        Next

    End Sub

    Public Function eliminarFormatoNumero(ByVal valor As String) As String
        valor = Replace(valor, "$", "")
        valor = Replace(valor, ",", "")
        valor = Replace(valor, "%", "")
        Return valor
    End Function

    Public Sub addAtributesToData()
        Me.TxTPrecio.Attributes.Add("onkeypress", "javascript:return ValidNum(event);")
        '    Me.TxTPrecio.Attributes.Add("OnKeyUp", "OnCurrencyValueKeyUp(this);")
        '    Me.TxTPrecio.Attributes.Add("Onblur", "addsimbol(this);")

        Me.TxtGastosGralMat.Attributes.Add("onkeypress", "javascript:return ValidNum(event);")
        '    Me.TxtGastosGralMat.Attributes.Add("OnKeyUp", "OnCurrencyValueKeyUp(this);")
        Me.TxtGastosGralMat.Attributes.Add("Onblur", "addsimbol(this,2);")

        Me.TxTPorMate.Attributes.Add("onkeypress", "javascript:return ValidNum(event);")
        '    Me.TxTPorMate.Attributes.Add("OnKeyUp", "OnCurrencyValueKeyUp(this);")
        Me.TxTPorMate.Attributes.Add("Onblur", "addsimbol(this,2);")

        Me.TxtUtilMat.Attributes.Add("onkeypress", "javascript:return ValidNum(event);")
        '    Me.TxtUtilMat.Attributes.Add("OnKeyUp", "OnCurrencyValueKeyUp(this);")
        Me.TxtUtilMat.Attributes.Add("Onblur", "addsimbol(this,2);")

        Me.TxTDescuentoMat.Attributes.Add("onkeypress", "javascript:return ValidNum(event);")
        '    Me.TxTDescuentoMat.Attributes.Add("OnKeyUp", "OnCurrencyValueKeyUp(this);")
        Me.TxTDescuentoMat.Attributes.Add("Onblur", "addsimbol(this,2);")
    End Sub

    Public Sub Mensaje(ByVal msg As String)
        Dim alertScript As String = "<script language=JavaScript runat=server>"
        alertScript &= "alert('" & msg & "');"
        alertScript &= "</script>"
        ClientScript.RegisterClientScriptBlock(Page.GetType(), "clientScrip", alertScript)
    End Sub

#End Region

#Region "Eventos"

    Protected Sub agregarItem_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles agregarItem.Click

        Dim cliente As Cliente = DirectCast(CL.obtenerCliente(DropCliente.Text).Item(0), Cliente)

        If Me.DropCliente.Text <> "" And Me.TxtFecha.Text <> "" And Me.TxTCondiciones.Text <> "" And Me.DropVendedor.Text <> "" And _
        Me.TxTatencion.Text <> "" And Me.TxTGarantia.Text <> "" And Me.TxTRequisicion.Text <> "" And Me.TxTEntrega.Text <> "" And Me.TxTPlano.Text <> "" _
        And Me.TxTEstimadoSr.Text <> "" And Me.TxTPrecio.Text <> "" And Me.TxTCondiciones.Text <> "" And Me.TxTPlazosEntrega.Text <> "" _
        And Me.TxTLugarEntrega.Text <> "" And Me.TxTValidezOferta.Text <> "" Then

            Me.Panel1.Visible = True
            Me.LblAvisoLlenarCampos.Text = ""
            Dim nuevoPresupuesto As New Presupuesto(0, Me.TxtFecha.Text, TxtCondVenta.Text, TxTatencion.Text, TxTGarantia.Text, _
                             TxTEntrega.Text, TxTPlano.Text, -1, -1, -1, CInt(eliminarFormatoNumero(Me.TxtGastosGralMat.Text)), CInt(eliminarFormatoNumero(TxTPorMate.Text)), _
                            CInt(eliminarFormatoNumero(Me.TxtUtilMat.Text)), CInt(eliminarFormatoNumero(TxTDescuentoMat.Text)), cliente.ID, DropVendedor.Text, TxTRequisicion.Text, "p", _
                            Me.TxTEstimadoSr.Text, Me.TxTPrecio.Text, Me.TxTCondiciones.Text, Me.TxTPlazosEntrega.Text, Me.TxTLugarEntrega.Text, Me.TxTValidezOferta.Text)

            CL.InsertarPresupuestoTemporal(nuevoPresupuesto)
        Else
            Me.LblAvisoLlenarCampos.Text = "Para Ingresar un nuevo item necesita completar todos los datos"
        End If

        Me.lblIdPresupuesto.Text = CL.obtenerUltimoPresupuesto()

    End Sub

    Protected Sub GridItems_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridItems.RowCreated
        redireccionaPagina()
    End Sub

#End Region


End Class
